// RAP [bm]: animations
///*******************************************************************************
// * Copyright (c) 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// ******************************************************************************/
//
//package org.eclipse.ui.internal;
//
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//
//import org.eclipse.jface.util.Geometry;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.events.PaintEvent;
//import org.eclipse.swt.events.PaintListener;
//import org.eclipse.swt.graphics.GC;
//import org.eclipse.swt.graphics.Image;
//import org.eclipse.swt.graphics.Rectangle;
//import org.eclipse.swt.widgets.Canvas;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Shell;
//
///**
// * @since 3.3
// *
// */
//public class ImageAnimationFeedback extends DefaultAnimationFeedback {
// private class ImageCanvas extends Canvas {
// private Image image;
// /**
// * @param parent
// * @param style
// */
// public ImageCanvas(Composite parent, int style, Image image) {
// super(parent, style);
// this.image = image;
//
// addPaintListener(new PaintListener() {
// public void paintControl(PaintEvent e) {
// paintImage(e.gc);
// }
// });
// }
// /**
// * @param gc
// */
// protected void paintImage(GC gc) {
// gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, getBounds().width, getBounds().height);
// }
//
// /* (non-Javadoc)
// * @see org.eclipse.swt.widgets.Widget#dispose()
// */
// public void dispose() {
// super.dispose();
// image.dispose();
// }
// }
//
// private Display display;
// private Shell theShell;
//
// private List startRects = new ArrayList();
// private List endRects = new ArrayList();
// private List controls = new ArrayList();
//
// private Image backingStore;
//
// /**
// * Creates an animation effect where the interpolated rectangles are displayed using Canvas
// * controls that show an image of the bits that were originally occupied by the various
// * 'start' rectangles.
// */
// public ImageAnimationFeedback() {}
//
// /**
// * @param parentShell
// */
// public void initialize(Shell parentShell, Rectangle startRect, Rectangle endRect) {
// display = parentShell.getDisplay();
//
// Rectangle psRect = parentShell.getBounds();
// theShell = new Shell(parentShell, SWT.NO_TRIM | SWT.ON_TOP);
// theShell.setBounds(parentShell.getBounds());
//
// addStartRect(startRect);
// addEndRect(endRect);
//
// // Capture the background image
// backingStore = new Image(theShell.getDisplay(), psRect);
// GC gc = new GC(display);
// gc.copyArea(backingStore, psRect.x, psRect.y);
// gc.dispose();
//
// theShell.setBackgroundImage(backingStore);
// theShell.setVisible(true);
// display.update();
// }
//
// public void addStartRect(Rectangle rect) {
// if (rect != null) {
// Rectangle start = Geometry.toControl(theShell, rect);
// startRects.add(start);
//
// Image image = new Image(display, rect.width, rect.height);
// GC gc = new GC(display);
// gc.copyArea(image, rect.x, rect.y);
// gc.dispose();
//
// ImageCanvas canvas = new ImageCanvas(theShell, SWT.BORDER | SWT.NO_BACKGROUND, image);
// controls.add(canvas);
// }
// }
//
// public void addEndRect(Rectangle rect) {
// if (rect != null) {
// Rectangle end = Geometry.toControl(theShell, rect);
// endRects.add(end);
// }
// }
//
// public void renderStep(double amount) {
// // Move the controls to the new interpolation position
// Iterator startIter = startRects.iterator();
// Iterator endIter = endRects.iterator();
// Iterator ctrlIter = controls.iterator();
// while (startIter.hasNext()) {
// Rectangle start = (Rectangle) startIter.next();
// Rectangle end = (Rectangle) endIter.next();
// ImageCanvas canvas = (ImageCanvas) ctrlIter.next();
//
// // Get the bounds of the interpolated rect
// Rectangle curRect = RectangleAnimation.interpolate(start, end, amount);
// canvas.setBounds(curRect);
// }
//
// display.update();
// }
//
// public void jobInit() {
// }
//
// /**
// *
// */
// public void dispose() {
// backingStore.dispose();
// for (Iterator ctrlIter = controls.iterator(); ctrlIter.hasNext();) {
// ImageCanvas canvas = (ImageCanvas) ctrlIter.next();
// canvas.dispose();
// }
//
// theShell.setVisible(false);
// theShell.dispose();
// }
//}